<?php

include_once("../dao/conexao_class.php");
include_once("../model/predio_departamento_class.php");

class PredioDepartamentoDAO {

    private $insert = "INSERT INTO predio_departamento(pre_id,dep_id) values(?,?);";
//    private $update = "UPDATE predio_departamento SET per_descricao = ? WHERE per_id = ?;";
    private $delete = "DELETE FROM predio_departamento WHERE pre_id = ?;";
    private $select = "SELECT * FROM predio_departamento;";
    private $select_by_departamento = "SELECT * FROM predio_departamento WHERE dep_id = ?;";
    private $select_by_predio = "SELECT * FROM predio_departamento WHERE pre_id = ?;";
//    private $select_predio_departamento = "SELECT * FROM predio_departamento WHERE per_descricao = ?;";

    function insert($objPredioDepartamento) {
        //conectando ao banco
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $ok = true;
//        var_dump($conn);
        //criando o preparedStatment
        if ($stm = $conn->prepare($this->insert)) {
            
            if($objPredioDepartamento->getPredio() !== NULL){
                foreach($objPredioDepartamento->getPredio() as $pre){

                    $stm->bind_param("ii", $pre, $objPredioDepartamento->getDepartamento());
                    if (!$stm->execute()) {

                        $conn->close();
                        $ok = false;
                        break;
                    }
                }
            }
            
        } 
        return $ok;
        
    }

    function delete($id) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();

        if ($stm = $conn->prepare($this->delete)) {

            $stm->bind_param("i", $id);

            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
        }
        return false;
    }

    function findAllPredioDepartamento() {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $perM = new PredioDepartamentoModel();
        $lista = array();
        if ($stm = $conn->prepare($this->select)) {

            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($predio, $departamento);


            //para cada resultado encontrado
            $i = 0;
            while ($stm->fetch()) {
                $perM = new PredioDepartamentoModel();
                
                $perM->setPredio($predio);
                $perM->setDepartamento($departamento);
                
                $lista[$i++] = $perM;
            }

            $conn->close();
            return $lista;
        }
    }
    
    
    
    function findByDepartamento($departamento) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $perM = new PredioDepartamentoModel();
        $lista = array();
        if ($stm = $conn->prepare($this->select_by_departamento)) {
            
            $stm->bind_param('i', $departamento);
            
            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($predio, $departamento);


            //para cada resultado encontrado
            $i = 0;
            while ($stm->fetch()) {
                $perM = new PredioDepartamentoModel();
                
                $perM->setPredio($predio);
                $perM->setDepartamento($departamento);
                
                $lista[$i++] = $perM;
            }

            $conn->close();
            return $lista;
        }
    }
    
    function findByPredio($predio) {

        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $perM = new PredioDepartamentoModel();
        $lista = array();
        if ($stm = $conn->prepare($this->select_by_predio)) {
            
            $stm->bind_param('i', $predio);
            
            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($predio, $departamento);


            //para cada resultado encontrado
            $i = 0;
            while ($stm->fetch()) {
                $perM = new PredioDepartamentoModel();
                
                $perM->setPredio($predio);
                $perM->setDepartamento($departamento);
                
                $lista[$i++] = $perM;
            }

            $conn->close();
            return $lista;
        }
    }
    
}

//$teste = new PredioDepartamentoDAO();
//$per = new PredioDepartamentoModel();
////$per->setId(3);
//$per->setDescricao("Administraçao");
//
////$per = 3;
//if($teste->insert($per)){
//    printf("Deletado com sucesso!");
//}else{
//    printf("Erro ao deletar!");
//}
//
//var_dump($teste->findAllPredioDepartamento());

